package com.promotores;

import java.util.List;
import java.util.concurrent.ExecutionException;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.promotores.jsonparsing.*;
import com.promotores.util.Parametros;

public class ActivityLogin extends Activity {
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// TODO Put your code here
		setContentView(R.layout.pr_login);
		
		Resources res=getResources();
        //TextView olvidoContrasena = (TextView) findViewById(R.id.txtOlvidoContrasena);
        
        //Colocando UNDERLINE a 'Registro' y a 'Olvido su Contraseña'
        CharSequence styledText2 = res.getText(R.string.logCambiarContrasena);
        //olvidoContrasena.setText(styledText2, TextView.BufferType.SPANNABLE);
        
        //Habilitando los links a la WEB
        //olvidoContrasena.setMovementMethod(LinkMovementMethod.getInstance());
	}
	
	public void onButtonClicked(View v){
		// De validarse el usuario, envía a la siguiente actividad (A IMPLEMENTAR)
    	
    	EditText txtUsuario = (EditText) findViewById(R.id.tbxUsuario);
    	EditText txtContrasena = (EditText) findViewById(R.id.tbxContrasena);
    	String usuario = txtUsuario.getText().toString();
    	String contrasena = txtContrasena.getText().toString();
    	
    	JSONObject jUsuarios;
    	try {
    		JSONLogin jsonLogin = new JSONLogin();
    		jUsuarios=jsonLogin.execute("http://200.16.7.112:3000/users/sign_in",usuario,contrasena).get();
    	} catch (InterruptedException e1) {
    		e1.printStackTrace();
    		return;
    	} catch (ExecutionException e1) {
    		e1.printStackTrace();
    		return;
    	}
    	
    	if (jUsuarios!=null){
    		
    		Intent intent = new Intent(this, ActivityMenuPromotores.class);
    		startActivity(intent);
    		
    		try {
    		if (jUsuarios.getJSONObject("user").getString("profile_id").compareTo("1")==0){
    			//agregando el codigo del usuario actual
    			Parametros.setCurrent_user(jUsuarios.getJSONObject("user").getString("id"));
    			Parametros.setMail_current_user(usuario);
    			//leyendo los tipos de evento que el usuario puede evaluar
    			JsonAdminxTipoEvento jsonAdmin = new JsonAdminxTipoEvento();
    			List<BeanTipoEvento> adminxTipoEvento = jsonAdmin.read();
    			if (adminxTipoEvento==null){
    				Toast.makeText(this, "No sync TipoEvento x Usuario", Toast.LENGTH_LONG).show();
    				return ;
    			}
    			Parametros.setLstUser_type_events(adminxTipoEvento);
    			verificarOffline();
    			
    			startActivity(intent);
    		}
    		else {
    			Toast.makeText(this, "Usuario sin privilegios", Toast.LENGTH_LONG).show();
    		}
    		
//    		usuario=new UsuarioBean();
//    		
//    			usuario.setId(jUsuarios.getJSONObject("user").getString("id"));
//    			usuario.setNombre(jUsuarios.getJSONObject("user").getString("nombre"));
//    			usuario.setApeMaterno(jUsuarios.getJSONObject("user").getString("ape_materno"));
//    			usuario.setApePaterno(jUsuarios.getJSONObject("user").getString("ape_paterno"));

    		} catch (JSONException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	else{
    		if (isNetworkAvailable())
    			Toast.makeText(this, "Datos incorrectos", Toast.LENGTH_LONG).show();
    		else 
    			Toast.makeText(this, "No hay conexión disponible", Toast.LENGTH_LONG).show();
    	} 	
    	
	}
	
	private void verificarOffline() {
		// TODO Auto-generated method stub
		//Eventos
		GestorEvento dbEvento = new GestorEvento(this);		
		//Promociones
		GestorPromocion dbPromocion = new GestorPromocion(this);		
		List<BeanEvento> listaEventos = dbEvento.getAllNotSaved();
		List<BeanPromocion> listaPromocion = dbPromocion.getAllPromocionNotSaved();
		if (listaEventos.isEmpty() && listaPromocion.isEmpty()){
			Parametros.setOffline_mode(false);
//					offline.setVisibility(View.INVISIBLE);
//			offline.setVisibility(View.GONE);
//			offline.invalidate();
		}
		else Parametros.setOffline_mode(true);
	}

	private boolean isNetworkAvailable() {
	    ConnectivityManager connectivityManager 
	          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
	    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
	    return activeNetworkInfo != null;
	}

}